package com.weiqiao.mall.repository;

import com.weiqiao.base.dao.IBaseMongoDao;
import com.weiqiao.mall.domain.ChannalProductEntity;
import com.weiqiao.mall.domain.ProductEntity;
import org.bson.Document;
import org.bson.conversions.Bson;

import java.util.List;


/**
 * 产品管理 持久化层 接口 继承IBaseMongoDao
 */
public interface IProductRepository extends IBaseMongoDao {

    /**
     * 产品管理
     *
     * @param company_id
     */
    List<String> getList(int company_id);

    /**
     * 产品管理
     *
     * @param company_id
     */
    List<ProductEntity> getProductList(int company_id);

    /**
     * 查询一个
     *
     * @param filter 条件
     * @return
     */
    String getOneProduct(Bson filter);

    /**
     * 产品管理 --添加 修改产品
     *
     * @param json
     */
    boolean editProductByJson(Bson filter, String json);

    /**
     * 产品管理 --添加 修改产品
     *
     * @param doc
     */
    void editProductByDocument(Bson filter, Document doc);

    /**
     * 产品管理--搜索
     *
     * @param company_id
     * @param pro_nam
     */
    List<ProductEntity> searchProZ(int company_id, String pro_nam);


    /**
     * 产品管理 --单项删除产品
     */
    boolean delOnlyOneZ(int company_id, String pro_id);

    /**
     * 产品管理--删除选中产品
     */
    boolean delSelectProZ(int company_id, String[] pro_id);

    /**
     * 订单列表--查询产品信息
     */
    List<ProductEntity> findProByDet(int company_id, String pro_nam);

    /**
     * 查询产品结果条数
     */
    int countProduct(int company_id, Bson bson);

    /**
     * 产品查询模块功能实现
     */
    List<String> getProductsByFilterSortSkipLimt(Bson filter, Bson filterSort, int skip, int limit);

    /**
     * 查询单条产品
     */
    ProductEntity findOneProduct(int company_id, Bson filter);

    /**
     * 修改单条产品
     */
    void updateOneProduct(int company_id, Bson bson, Document doc1);

    /**
     * 查询产品信息  并排序
     */
    List<String> getProductListBySort(int company_id, Bson sort);

    /**
     * 添加单条产品信息
     */
    boolean insertOneProduct(String json);

    /**
     * 查询所有产品
     *
     * @param filter
     * @param sort
     * @return
     */
    List<ProductEntity> getMany(Bson filter, Bson sort);

    /**
     * 查询单个产品
     *
     * @param filter
     * @return
     */
    ProductEntity getOne(Bson filter);

    /**
     * 查询产品
     *
     * @param filter
     * @return
     */
    List<ChannalProductEntity> findProducts(Bson filter);

}
